﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace QldtSdh.GUI.DuLieu
{
    using BLL;
    using DAL;
    using DAL.Models;
    using QldtSdh.Utils;
    using QldtSdh.GUI.Utils;

    public partial class FormQuanLyLoaiDeTai : QldtSdh.GUI.Common.BaseDialog
    {
        public FormQuanLyLoaiDeTai()
        {
            InitializeComponent();

            gridLoaiDeTai.AddRowIndexing();
            gridLoaiDeTai.SetDataGridViewAsListBox(rowHeadersVisible: true, columnHeadersVisible: false);

            var lst = BizDeTai.GetListLoaiDeTai();
            bsLoaiDeTai.DataSource = lst;
            gridLoaiDeTai.SetDataSource(bsLoaiDeTai);

            UpdateGuiBySelectedLoaiDeTai();
        }

        private void bsLoaiDeTai_CurrentChanged(object sender, EventArgs e)
        {
            UpdateGuiBySelectedLoaiDeTai();
        }

        private void UpdateGuiBySelectedLoaiDeTai()
        {
            LoaiDeTai x = null;
            if (bsLoaiDeTai.Current != null)
                x = bsLoaiDeTai.Current as LoaiDeTai;
            if (x == null)
            {
                btnSua.Enabled = btnXoa.Enabled = false;
            }
            else
            {
                btnSua.Enabled = btnXoa.Enabled = true;
            }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            var loaiDeTai = new LoaiDeTai() { MaLoaiDeTai = System.Guid.NewGuid().ToString(), TenLoaiDeTai = "" };
            var frm = new FormQuanLyLoaiDeTai_ChiTiet(loaiDeTai, taoMoi: true);
            if (frm.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
            {
                bsLoaiDeTai.Add(loaiDeTai);
                bsLoaiDeTai.Position = bsLoaiDeTai.Count - 1;
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            LoaiDeTai x = null;
            if (bsLoaiDeTai.Current != null)
                x = bsLoaiDeTai.Current as LoaiDeTai;
            if (x == null)
                DialogUtils.ShowErrorWithDefaultTitle("Bạn phải chọn loại đề tài để xoá");
            else
            {
                if (DialogUtils.Confirmed("Bạn chắc chắn muốn xoá loại đề tài \"{0}\" không?", x.TenLoaiDeTai) == false)
                    return;
                try
                {
                    BizDeTai.DeleteLoaiDeTai(x.MaLoaiDeTai);
                    bsLoaiDeTai.RemoveCurrent();
                    try
                    {
                        bsLoaiDeTai.Position = 0;
                        UpdateGuiBySelectedLoaiDeTai();
                    }
                    catch { }
                }
                catch (Exception exc)
                {
                    DialogUtils.ShowErrorWithDefaultTitle("Không xoá được loại đề tài.\r\n" + exc.Message);
                }
            }
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            LoaiDeTai x = null;
            if (bsLoaiDeTai.Current != null)
                x = bsLoaiDeTai.Current as LoaiDeTai;
            if (x == null)
                DialogUtils.ShowErrorWithDefaultTitle("Bạn phải chọn loại đề tài để xoá");
            else
            {
                var frm = new FormQuanLyLoaiDeTai_ChiTiet(x, taoMoi: false);
                if (frm.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
                {
                    bsLoaiDeTai.ResetCurrentItem();
                }
            }
        }

        private void gridLoaiDeTai_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (bsLoaiDeTai.Count > 0)
                btnSua_Click(null, null);
        }
    }
}
